package com.sinosoft.jwjw.base;

import com.github.pagehelper.Page;
import com.sinosoft.jwjw.utils.ResultDetail;
import com.sinosoft.jwjw.utils.ResultPage;
import net.sf.json.JSONArray;


import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 基于crud的service
 */
public interface BaseCrudService<T, PK extends Serializable> {

    BaseCrudMapper<T, PK> getMapper();


    /**
     * 物理删除
     * @param id
     * @return
     */
    int deleteByPrimaryKey(String id);

    /**
     * 新增对象
     * @param record
     * @return
     */
    int insert(T record);


    /**
     * 更新对象所有属性
     * @param record
     * @return
     */
    int updateByPrimaryKey(T record);

    /**
     * 根据id获取对象详情
     * @param id
     * @return
     */
    T selectByPrimaryKey(String id);

    /**
     * 查询所有对象列表
     * @return
     */
    List<T> selectAll();






    /*
     * 分页查询列表
     * 必传参数：
     * 可选参数：@chineseName String
     */
    ResultPage getListPage(Map<String, Object> params);


    /*
     * 逻辑修改用户
     * 必传参数：@id String
     * 可选参数：@chineseName String
     */
    ResultDetail updateById(Map<String, Object> params);

    /*
     * 逻辑删除对象
     * 必传参数：@id String
     */
    ResultDetail deleteById(String id);

    /*
     * 逻辑删除对象(批量)
     * 必传参数：@id String
     */
    ResultDetail deleteByIds(JSONArray ids);

    /*
     * 新增对象
     * 必传参数：@id String
     */
    ResultDetail inserts(T record);
}
